﻿using System.IO;
using System.Net.NetworkInformation;
using System.Text;
using NUnit.Framework;
using Smartkernel.Net;

namespace Smartkernel.NUnitTest.Net
{
    [Category("Net")]
    [TestFixture]
    public class SmartNetTest
    {
        [Test]
        public void Test()
        {
            //【01】检查端口状态（涉及方法：CheckPort）
            //Assert.AreEqual(SmartNet.CheckPort("127.0.0.1", 80), true);
            //Assert.AreEqual(SmartNet.CheckPort("127.0.0.1", 81), false);

            //【02】判断IP地址大小（涉及方法：CompareIP）
            Assert.AreEqual(SmartNet.CompareIP("211.66.4.102", "192.168.1.1"), -1);
            Assert.AreEqual(SmartNet.CompareIP("127.0.0.1", "192.168.1.1"), 1);
            Assert.AreEqual(SmartNet.CompareIP("211.66.4.102", "211.66.4.102"), 0);

            //【03】下载文件（涉及方法：Download、DownloadToMHT）
            SmartNet.Download("http://www.cnblogs.com/smartkernel/archive/2008/08/03/1259079.html", @"C:\default.html");
            Assert.AreEqual(File.Exists(@"C:\default.html"), true);
            File.Delete(@"C:\default.html");
            //SmartNet.DownloadToMHT("http://www.cnblogs.com/smartkernel/archive/2008/08/03/1259079.html", @"C:\default.mht");
            //Assert.AreEqual(File.Exists(@"C:\default.mht"), true);
            //File.Delete(@"C:\default.mht");

            //【04】解析域名（涉及方法：GetDomain）
            string domain = "";
            SmartNet.GetDomain("http://www.Smartkernel.com:2008/default.aspx", SmartDomainType.Domain, out domain);
            Assert.AreEqual(domain, "chsoft.com:2008");

            //【05】获取本机MAC地址（涉及方法：GetHostMAC）
            //Assert.AreEqual(SmartNet.GetHostMAC(),"00:53:45:00:00:00");

            //【06】获取本机主机名（涉及方法：GetHostName）
            //Assert.AreEqual(SmartNet.GetHostName().ToLower(), "smartkernel-pc");

            //【07】获取Html（涉及方法：GetHtml）
            Assert.AreEqual(SmartNet.GetHtml("http://www.cnblogs.com/smartkernel/archive/2008/08/03/1259079.html", Encoding.UTF8).Contains("使用Ajax检查用户名是否已存在"), true);

            //【08】通过主机名获得IP地址（涉及方法：GetIPByHostName）
            Assert.AreEqual(SmartNet.GetIPByHostName("localhost")[0], "127.0.0.1");

            //【09】判断网址是不是可以访问（涉及方法：IsCanVisit）
            //Assert.AreEqual(SmartNet.IsCanVisit("http://www.cnblogs.com/smartkernel/archive/2008/08/03/1259079.html", 10), true);
            //Assert.AreEqual(SmartNet.IsCanVisit("http://localhost:2008/default2.aspx", 10), false);

            //【10】判断主机是否联网（涉及方法：IsOnLine）
            Assert.AreEqual(SmartNet.IsOnLine(), true);

            //【11】判断是不是私有IP地址（涉及方法：IsPrivateIP）
            Assert.AreEqual(SmartNet.IsPrivateIP("211.66.4.102"), false);
            Assert.AreEqual(SmartNet.IsPrivateIP("192.168.1.1"), true);

            //【12】Ping主机（涉及方法：Ping）
            Assert.AreEqual(SmartNet.Ping("127.0.0.1"), IPStatus.Success);
        }
    }
}
